/**
 * 数据库种子文件
 * 用于初始化数据库，创建默认管理员用户和基础分类
 */

const mongoose = require('mongoose');
const User = require('../models/User');
const Category = require('../models/Category');
require('dotenv').config();

// 连接到MongoDB
mongoose.connect(process.env.MONGODB_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

// 创建默认管理员用户
const createAdminUser = async () => {
  try {
    // 检查是否已存在管理员用户
    const adminExists = await User.findOne({ role: 'admin' });
    
    if (adminExists) {
      console.log('管理员用户已存在，跳过创建');
      return;
    }
    
    // 创建管理员用户
    const admin = await User.create({
      username: 'admin',
      password: 'admin123',
      role: 'admin'
    });
    
    console.log('管理员用户创建成功:', admin);
  } catch (err) {
    console.error('创建管理员用户失败:', err);
    throw err;
  }
};

// 创建默认分类
const createDefaultCategories = async () => {
  try {
    // 检查是否已存在分类
    const categoriesCount = await Category.countDocuments();
    
    if (categoriesCount > 0) {
      console.log('分类已存在，跳过创建');
      return;
    }
    
    // 创建默认分类
    const defaultCategories = [
      {
        name: '常用',
        description: '经常访问的网站',
        icon: 'star',
        color: '#FFD700',
        order: 1
      },
      {
        name: '工作',
        description: '工作相关的网站',
        icon: 'briefcase',
        color: '#4169E1',
        order: 2
      },
      {
        name: '学习',
        description: '学习资源',
        icon: 'book',
        color: '#2E8B57',
        order: 3
      },
      {
        name: '娱乐',
        description: '娱乐网站',
        icon: 'film',
        color: '#FF6347',
        order: 4
      },
      {
        name: '工具',
        description: '实用工具网站',
        icon: 'tools',
        color: '#696969',
        order: 5
      }
    ];
    
    await Category.insertMany(defaultCategories);
    
    console.log('默认分类创建成功');
  } catch (err) {
    console.error('创建默认分类失败:', err);
  }
};

// 执行种子函数
const seedDatabase = async () => {
  try {
    await createAdminUser();
    await createDefaultCategories();
    
    console.log('数据库初始化完成');
    process.exit();
  } catch (err) {
    console.error('数据库初始化失败:', err);
    process.exit(1);
  }
};

// 运行种子脚本
seedDatabase(); 